package cn.aiweiyi.qingjing.coupon.distribution.feign.hystrix;

import cn.aiweiyi.qingjing.coupon.comm.vo.CommonResponse;
import cn.aiweiyi.qingjing.coupon.comm.vo.CouponTemplateSDK;
import cn.aiweiyi.qingjing.coupon.distribution.feign.TemplateClient;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import java.util.*;

/**
 * @author 青衿
 * @Date 2020/11/21 14:30
 * 对模板服务发起调用的熔断降级策略
 **/
@Slf4j
@Component
public class TemplateClientHystrix implements TemplateClient {

    /**
     * 编写一个兜底策略,当请求tempalte服务的该方法出错时,hystrix降级处理
     *
     * @return
     */
    @Override
    public CommonResponse<List<CouponTemplateSDK>> findAllUsableTemplate() {
        log.error("向template模块findAllusableTemplate请求时出现错误");
        return new CommonResponse<>(-1,
                "向template模块findAllUsableTemplate请求时出现错误",
                Collections.emptyList());
    }


    /**
     * 该方法在Feign调用template微服务同名接口出错时,被Hystrix调用,降级
     *
     * @param ids
     * @return
     */
    @Override
    public CommonResponse<Map<Integer, CouponTemplateSDK>> findIds2TemplateSDK(Collection<Integer> ids) {
        log.error("向template模块findIds2TemplateSDK请求时出现错误");
        return new CommonResponse<>(-1,
                "向template模块findAllUsableTemplate请求时出现错误",
                new HashMap<>());
    }
}
